package com.lanchetech.user.service;

import com.lanchetech.bean.request.PageReq;
import com.lanchetech.bean.response.BasePageResp;
import com.lanchetech.bean.response.BaseResp;
import com.lanchetech.bean.response.ResultData;
import com.lanchetech.bean.vo.*;
import com.lanchetech.entity.*;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;

public interface CourseService {

    ResultData<Columns> getColumnsDetail(Long id);

    ResultData<BasePageResp<Columns>> getColumnsPage(PageReq req);

    ResultData<List<Columns>> getColumnsList();

    ResultData<CourseVO> getCourseDetail(User user, Long id);

    ResultData<BasePageResp<CourseVO>> getCoursePage(PageReq req);

    ResultData<CourseVO> getCoursePrevAndNext(Long id);

    ResultData<List<CourseVO>> getColumnCourseList(Long columnId);

    ResultData<BasePageResp<ColumnCourseAuthVO>> getColumnCourseAuthPage(PageReq req);

    BaseResp deleteCourseComment(Long id);

    ResultData<BasePageResp<CourseCommentPageVO>> getCourseCommentPage(PageReq req);

    BaseResp editCourseComment(CourseComment req);

    BaseResp toggleCourseCommentGood(Long courseId, Long commentId);

    BaseResp createColumnCourseCollect(ColumnCourseCollect req);

    BaseResp deleteColumnCourseCollect(ColumnCourseCollect req);

    ResultData<BasePageResp<ColumnCourseCollectPageVO>> getColumnCourseCollectPage(PageReq req);

    ResultData<CourseHomeworkVO> getCourseHomework(Long courseId);

    BaseResp editHomework(Homework req);

    ResultData<BasePageResp<HomeworkVO>> getHomeworkPage(PageReq req);

    ResultData<BasePageResp<Honor>> getHonorPage(PageReq req);

    ResultData<BasePageResp<ExpFlow>> getExpFlowPage(PageReq req);

    BaseResp toggleCourseGoods(Long courseId, Integer goods);

}